0
תגובות
החזרה של נתונים ממערך
פתח
davsev
,
אני מנסה לייצא נתונים מהדטאבייס כך שיוצגו מפורמט מסויים שאציג בהמשך.
זו הטבלה שיש לי במסד הנתונים:
אני מעוניין לייצא את הנתונים בפורמט הבא:
last1 first1 last2 first2 & last3 first3
last4 first4 & last4 first4
זה הקוד שכתבתי
עם הקוד הזה אני מקבל את התוצאה הבאה:
last3 first1 last1 first1 & last2 first1
last5 first4 & last4 first4
כפי שניתן לראות אני מקבל קודם את התוצאה האחרונה ולאחר מכן את התוצאה הראשונה והשנייה וכך הלאה. בFIRST אני מקבל תמיד את הערך הראשון.
אני לא מבין מה אני עושה לא בסדר.
יעצו לי להשתמש בדגלים אבל אני לא מוצא הסבר ודוגמא טובה לכך.
תודה מראש!
זו הטבלה שיש לי במסד הנתונים:
id index first last
--------------------------
1 1 first1 last1
2 1 first2 last2
3 1 first3 last3
4 2 first4 last4
5 2 first5 last5
--------------------------
1 1 first1 last1
2 1 first2 last2
3 1 first3 last3
4 2 first4 last4
5 2 first5 last5
אני מעוניין לייצא את הנתונים בפורמט הבא:
last1 first1 last2 first2 & last3 first3
last4 first4 & last4 first4
זה הקוד שכתבתי
//HERE I RETRIVE ALL THE DATA FROM THE DATABASE.
$sql = "SELECT COUNT( * ) FROM table WHERE index= $index";
$result = $dbh->prepare($sql);
$result->execute();
$number_of_rows = $result->fetchColumn();
//ASSOC DEFINITION
$sth = $dbh->prepare("SELECT * FROM table WHERE index= $index);
$sth->execute();
$value = $sth->fetch(PDO::FETCH_ASSOC);
//THIS IS WHERE I CALL ALL THE ROWS BY THEIR VALUE
$return = "";
$fname = $value['fname'];
$lname = $value['lname'];
$numRow = $number_of_rows-2; // THE ITEM BEFORE THE LAST ONE IN THE ARRAY
$lastItem = $number_of_rows - 1; //LAST INDEX IN THE ARRAY
for($counter = 0; $counter <= $numRow; $counter++){
$value = $sth->fetch(PDO::FETCH_ASSOC);
$fname[$counter] = !empty($fname[$counter]) ? $fname[$counter] : '';
$return .= $lname. ', ' . $fname;
}
$fname[$counter] = !empty($fname[$lastItem]) ? $fname[$lastItem] : '';
$return .= "&" . $fname. ', ' . $lname;
$return .= ' ';
return $return;
$sql = "SELECT COUNT( * ) FROM table WHERE index= $index";
$result = $dbh->prepare($sql);
$result->execute();
$number_of_rows = $result->fetchColumn();
//ASSOC DEFINITION
$sth = $dbh->prepare("SELECT * FROM table WHERE index= $index);
$sth->execute();
$value = $sth->fetch(PDO::FETCH_ASSOC);
//THIS IS WHERE I CALL ALL THE ROWS BY THEIR VALUE
$return = "";
$fname = $value['fname'];
$lname = $value['lname'];
$numRow = $number_of_rows-2; // THE ITEM BEFORE THE LAST ONE IN THE ARRAY
$lastItem = $number_of_rows - 1; //LAST INDEX IN THE ARRAY
for($counter = 0; $counter <= $numRow; $counter++){
$value = $sth->fetch(PDO::FETCH_ASSOC);
$fname[$counter] = !empty($fname[$counter]) ? $fname[$counter] : '';
$return .= $lname. ', ' . $fname;
}
$fname[$counter] = !empty($fname[$lastItem]) ? $fname[$lastItem] : '';
$return .= "&" . $fname. ', ' . $lname;
$return .= ' ';
return $return;
עם הקוד הזה אני מקבל את התוצאה הבאה:
last3 first1 last1 first1 & last2 first1
last5 first4 & last4 first4
כפי שניתן לראות אני מקבל קודם את התוצאה האחרונה ולאחר מכן את התוצאה הראשונה והשנייה וכך הלאה. בFIRST אני מקבל תמיד את הערך הראשון.
אני לא מבין מה אני עושה לא בסדר.
יעצו לי להשתמש בדגלים אבל אני לא מוצא הסבר ודוגמא טובה לכך.
תודה מראש!